1. Technical Field
The present disclosure relates to software maintenance, and more specifically to reducing down time when patching multiple inter-dependent software components.
2. Related Art
Software components refer to applications/software programs, which on execution perform specific tasks. Examples of software components are database management software, operating system, user-defined applications, etc. As is well known, data management software and operating system are characterized as “system software”, which is shared by many “user-defined applications” (or user applications).
Multiple software components are often used together to perform more complex tasks. For example, a customer relationship management (CRM) software may be implemented using a set/stack of software components containing multiple user-defined applications, database management software and an operating system cooperatively working together on one or more digital processing systems (connected by a network).
It is generally well known that the execution of a specific component (such as database management software) in a stack may require/use the services/tasks provided by other components in the stack such as an operating system, while being required/used for the execution of another set of components (e.g., user-defined applications) in the stack. Thus, the stack of components are said to be inter-dependent based on such requirements.
There is a general need to provide for patching of such inter-dependent stacks of software components. Patching refers to replacement of desired data/instructions in the software components with corresponding corrected data/instructions (often referred to as patches). The replacements are generally intended to either fix errors or improve the performance of the software components.
Patching of a software component often necessitates the component to be shutdown (placed in non-executing state) before the application of the patches and to be started up (executing state) after the successful application of the patches. As is well known, when in an execution state, at least some of the instructions corresponding to the software component are in random access memory (RAM) type components, ready for execution or being executed by a processor. On the other hand, shutdown implies that the instructions of the software component are no longer executed.
The time duration between the shutdown and startup of a component is often referred to as downtime. It is generally desirable that the downtime of components be reduced. Such a desire is more pertinent in complex systems with many inter-dependent software components since the downtime of a software component affects the downtime and functioning of other dependent components in the stack.
Several aspects of the present invention reduces the downtime of the multiple inter-dependent software components during patching, while meeting one or more of requirements, as suited in the specific environments.
In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.